// ActionScript file
import classes.Telecentro;

import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.events.FlexEvent;
import mx.managers.PopUpManager;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import title_window.cadastraTelecentro;

//variavel pop-up do tipo telecentro
public var popUp:cadastraTelecentro;	
//objeto do tipo curso
[Bindable]
public var telecentro:Telecentro; 
//array responsavel por preencher a tabela
[Bindable]
public var lista:ArrayCollection;
//array responsavel por preencher o combo
[Bindable]
public var lista_cids:ArrayCollection;

/*
FUNÇÃO CHAMADA LOGO APÓS A TELE SER REQUISITADA
-chama a funcao cursos cadastrados
-adicona eventos aos botoes editar e excluir da tabela			
*/
protected function inicializa(event:FlexEvent):void
{
	this.controle_telecentro.listarTodosTelecentros();
	this.controle_cidade.listarTodosCidade();
	dgTelecentro.addEventListener("editar", editar);
	dgTelecentro.addEventListener("excluir", excluir);
}
/*
-responsavel por chamar metodo listar todos (Java)
-usada após todas as operações (inserir, editar, remover, listar)
-obj:atualizar a tabela
*/
protected function cidades_cadastrados():void
{	
	this.controle_telecentro.listarTodosTelecentros();
}			
//abre o title window (pop-up) para cadastrar novo curso
protected function novo():void
{
	popUp=cadastraTelecentro(PopUpManager.createPopUp(this,cadastraTelecentro,true));
	popUp.addEventListener("PopUpFechou",salvou);
	popUp.lista_cidades=lista_cids;
}
//chamada após fechar o pop-up de cadastro
private function salvou(evt:Event):void
{
	telecentro=popUp.telecentro;				
	this.controle_telecentro.inserirTelecentro(telecentro);
}
//abre o title window (pop-up) para editar o curso
public function editar(e:Event):void
{
	popUp=cadastraTelecentro(PopUpManager.createPopUp(this,cadastraTelecentro,true));
	popUp.addEventListener("PopUpFechou",editou);		
	popUp.telecentro=Telecentro (dgTelecentro.selectedItem);
	popUp.lista_cidades=lista_cids;
}
//chamada após fechar o pop-up de editar
private function editou(evt:Event):void
{				
	telecentro=popUp.telecentro;	
	this.controle_telecentro.editarTelecentro(telecentro);
}
//evento botão excluir da tabela
//verifica se deseja ou nao excluir
public function excluir(e:Event):void
{
	Alert.show("Excluir o telecentro '"+dgTelecentro.selectedItem.nome+"' ?","Excluir Telecentro", Alert.YES | Alert.NO ,null,opcao);	
}
//verifica a resposta do usuario
private function opcao(event:CloseEvent):void{
	if(event.detail==Alert.YES){					
		this.controle_telecentro.removerTelecentro(dgTelecentro.selectedItem);
	}					
}

/*
FUNÇÕES CHAMADAS CASO OS MÉTODOS DE INSERIR, EDITAR, REMOVER E LISTAR OBTIVERAM SUCESSO 
*/
//emite mensagem e atualiza a tabela
protected function inserir_result(event:ResultEvent):void
{
	Alert.show("Cadastrado com sucesso");
	cidades_cadastrados();
}				
//emite mensagem e atualiza a tabela
protected function editar_result(event:ResultEvent):void
{
	Alert.show("editado com sucesso");
	cidades_cadastrados();
}			
//emite mensagem e atualiza a tabela
protected function remover_result(event:ResultEvent):void
{
	Alert.show("removido com sucesso");
	cidades_cadastrados();
}
//preenche a tabela
protected function listar_result(event:ResultEvent):void
{
	lista=event.result as ArrayCollection;
}
//recebe as cidades cadastradas
protected function listar_cid_result(event:ResultEvent):void
{
	lista_cids=event.result as ArrayCollection;				
}


/*
FUNÇÕES CHAMADAS CASO OS MÉTODOS DE INSERIR, EDITAR, REMOVER E LISTAR OBTIVEREM ALGUM ERRO
*/	
//emite mensagem 
protected function inserir_fault(event:FaultEvent):void
{
	Alert.show("Erro ao cadastrar cidade");
}
//emite mensagem
protected function editar_fault(event:FaultEvent):void
{
	Alert.show("Erro ao editar");
}
//emite mensagem
protected function remover_fault(event:FaultEvent):void
{
	Alert.show("Erro ao remover");
}
//emite mensagem
protected function listar_fault(event:FaultEvent):void
{
	Alert.show("Erro aos listar");
}
//emite mensagem
protected function listar_cid_fault(event:FaultEvent):void
{
	Alert.show("Erro ao listar cidades");
}			
